 /*
 *  Stack.java
 * 
 * Clase stack que simula los metodos que posee un stack, los cuales seran implementados por otra clase con objetos
 * genericos.
 * 
 *  Universidad del Valle de Guatemala            Algoritmos y Estructura de Datos 
 *  Seccion 20
 *  Hoja de trabajo 2
 */

/**
 *
 * @param <E> Esto es para que al momento de implementar esata interface, pueda elegirse con que clase de objeto se utilizara, es conocido como generico.
 * @author Alejandro Rojas Flores  carne 1010
 */
public interface Stack <E> {
    
    /**
     * Este metodo permite, por medio de parametro ingresar un objeto al stack, en la ultima posicion.
     * @param elemento Se recibe como parametro un objeto de la misma clase con que se implemento la interfaz, para poderlo ingresar a la pila.
     */
    public void push(E elemento);
    
    /**
     * Metodo que permite obtener el objeto que se encuentra en la ultimo posicion y lo elimina de la pila al ser llamado
     * el metodo.
     * @return Un objeto de la clase que se especifico en la implementacion de la pila, siendo este el de ultima posicion.
     */
    public E pop();
    
    /**
     * Metodo que permite obtener el objeto que se encuentra en la ultima posicion sin eliminarlo de la pila.
     * @return Un objeto de la clase que se especifico en la implementacion de la pila, siendo este el de la ultima posicion.
     */
    public E peek();
    
    /**
     * Metodo que indica por medio de un valor boolean si la pila se encuentra vacia o no.
     * @return Devuelve un valor boolean, True para vacio y False para no vacio
     */
    public boolean empty();
    
    
    
}
